home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / archiver / ncmp424s.zoo / build < prev    next >
Text File  |  1993-03-06  |  20KB  |  843 lines

  1. :
  2. #!/bin/sh
  3. #
  4. version="4.2.4"
  5.  
  6. echo "Build (N)compress ${version}"
  7. CLS=`sh -c 'tput clear' 2>/dev/null`
  8.  
  9. if expr `echo "foo\c"` : '.*c' >/dev/null
  10. then
  11.     n='-n'
  12.     c=''
  13. else
  14.     n=''
  15.     c='\c'
  16. fi
  17.  
  18. trap 'rm -f /tmp/sh$$.tm* /tmp/sh$$.f* /tmp/sh$$.log /tmp/sh*.c' 0
  19. trap 'set +x ; exit 1' 1 2 15
  20.  
  21. [ -f compress.def ] && . ./compress.def
  22.  
  23. while true
  24. do
  25.     if [ "${DEFINED}" = yes ]
  26.     then
  27.         echo "${CLS}    Build (N)compress ${version}
  28.  
  29.  1.  Directory to install compress in: ${BINDIR}
  30.                           manual in  : ${MANDIR}
  31.  2.  Memory free for compress        : ${USERMEM}
  32.  3.  Input/Output buffer size        : ${IBUFSIZ} ${OBUFSIZ}
  33.  4.  C Compiler                      : ${CC}
  34.  5.  Compiler options                : ${CCOPT:---none--}
  35.  6.  Libary options                  : ${LBOPT:---none--}
  36.  7.  Special options for your system : ${EXTRA:---none--}
  37.  8.  Number of register variable     : ${REGISTERS}
  38.  9.  Symbolic links                  : ${LSTAT}
  39. 10.  Use include <utime.h>           : ${UTIME_H}"
  40.  
  41.         if [ ".${DIRENT}" = .yes ] 
  42.         then
  43.             echo "11.  Your system support dirent.h"
  44.         else
  45.             if [ ".${SYSDIR}" = .yes -a ".${DIRENT}" != .yes ]
  46.             then
  47.                 echo "11.  Your system support sys/dir.h"
  48.             else
  49.                 echo "11.  No directory support -r disabled."
  50.             fi
  51.         fi
  52.     
  53.         echo "12.  Word must start at even addres: ${NOALLIGN}, Bytorder on your system: ${BYTEORDER} (1=msb)"
  54.         echo "
  55.  d. Set default settings                    mkshar.  Create shell archive
  56.  c. Compile compress                        mktar.   Create tar archive
  57.  t. Test compress                           cleanup. Cleanup
  58.  i. Install compress                        genmake. Generate makefile
  59.  q. Stop
  60. "
  61.         echo ${n} "   Choice [1..10,d,c,t,i,q,mkshar,mktar,cleanup] : ${c}"
  62.  
  63.         (
  64.             echo "# Current parameters."
  65.             for var in CC CCOPT LBOPT BINDIR MANDIR DIRENT SYSDIR IBUFSIZ \
  66.                         OBUFSIZ USERMEM REGISTERS LSTAT BYTEORDER NOALLIGN \
  67.                         EXTRA DEFINED UTIME_H
  68.             do
  69.                 echo "${var}='`eval echo \$\{${var}\}`'"
  70.             done
  71.         ) >compress.def
  72.  
  73.         read choice var1 var2 var3 var4 varr
  74.         echo ""
  75.     else
  76.         choice=D
  77.     fi
  78.  
  79.     case "${choice}" in
  80.     1)
  81.         if [ ".${var1}" = . ]
  82.         then
  83.             echo ${n} "Directory to install compress in (default:${BINDIR}) ? ${c}"
  84.             read var1 dummy
  85.         fi
  86.  
  87.         BINDIR="${var1:-${BINDIR}}"
  88.  
  89.         if [ ".${var2}" = . ]
  90.         then
  91.             echo ${n} "Directory to install manuals in (default:${MANDIR}) ? ${c}"
  92.             read var2 dummy
  93.         fi
  94.  
  95.         MANDIR="${var2:-${MANDIR}}"
  96.         ;;
  97.  
  98.     2)
  99.         if [ ".${var1}" = . ]
  100.         then
  101.             echo "Compress use a lot of memory, the more memory it can just the faster"
  102.             echo "the programm is and the better compression is."
  103.             echo ${n} "Memory free for compress (default:${USERMEM}) ? ${c}"
  104.             read var1 dummy 
  105.         fi
  106.  
  107.         USERMEM="${var1:-${USERMEM}}"
  108.         ;;
  109.  
  110.     3)    
  111.         if [ ".${var1}" = . ]
  112.         then
  113.             echo "For input and output compress use buffers. A bigger buffer reduce"
  114.             echo "system (kernel) overhead. If your system is a 16 bits system don't"
  115.             echo "make the buffers bigger than 2048 bytes. The default 2048 is in"
  116.             echo "most cases a good answer."
  117.             echo ${n} "Best input buffer size (default:${IBUFSIZ}) ? ${c}"
  118.             read var1 var2 dummy
  119.  
  120.             if [ ".${var2}" = . ] 
  121.             then
  122.                 echo ${n} "Best output buffer size (default:${OBUFSIZ}) ? ${c}"
  123.                 read D dummy 
  124.             fi
  125.         fi
  126.  
  127.         var2="${var2:-${var1}}"
  128.          IBUFSIZ="${var1:-${IBUFSIZ}}"
  129.          OBUFSIZ="${var2:-${OBUFSIZ}}"
  130.         ;;
  131.  
  132.     4)
  133.         if [ ".${var1}" = . ]
  134.         then    
  135.             echo "C compiler to use for compilation (must by cc compatible)".
  136.             echo ${n} "C Compiler (default:${CC}) ? ${c}"
  137.             read var1 dummy
  138.         fi
  139.  
  140.         CC="${var1:-${CC}}"
  141.         ;;
  142.  
  143.     5)
  144.         if [ ".${var1}" = . ]
  145.         then
  146.             echo ${n} "Compiler options (default:${CCOPT:-none}) ? ${c}"
  147.             read var1
  148.         fi
  149.  
  150.         [ ".${var1}" != . ] && CCOPT="${var1} ${var2} ${var3} ${var4} ${varr}"
  151.         ;;    
  152.  
  153.     6)
  154.         if [ ".${var1}" = . ]
  155.         then
  156.             echo ${n} "Libary options (default:${LBOPT:-none}) ? ${c}"
  157.             read var1
  158.         fi
  159.  
  160.         [ ".${var1}" != . ] && LBOPT="${var1} ${var2} ${var3} ${var4} ${varr}"
  161.         ;;    
  162.  
  163.     7)
  164.         if [ ".${var1}" = . ]
  165.         then
  166.             echo "Some system needs extra defines see README"
  167.             echo ${n} "Special for your system (default:${EXTRA:-none}) ? ${c}"
  168.             read var1
  169.         fi
  170.  
  171.         [ ".${var1}" != . ] && EXTRA="${var1} ${var2} ${var3} ${var4} ${varr}"
  172.         ;;    
  173.  
  174.     8)
  175.         if [ ".${var1}" = . ]
  176.         then
  177.             echo ${n} "Number of register variable (default:${REGISTERS}) ? ${c}"
  178.             read var1 dummy
  179.         fi
  180.  
  181.         REGISTERS="${var1:-${REGISTERS}}"
  182.         ;;
  183.  
  184.     9)
  185.         if [ ".${var1}" = . ]
  186.         then
  187.             echo ${n} "Symbolic links (default:${LSTAT}) ? ${c}"
  188.             read var1 dummy
  189.         fi
  190.  
  191.         case "${var1:-${DIRENT}}" in
  192.         y|Y|yes|YES) LSTAT=yes; ;;
  193.         *)             LSTAT=no; ;;
  194.         esac
  195.         ;;
  196.  
  197.     10)
  198.         if [ ".${var1}" = . ]
  199.         then
  200.             echo ${n} "Do your system support utime.h (default:${UTIME_H}) ? ${c}"
  201.             read var1 dummy
  202.         fi
  203.  
  204.         case "${var1:-${DIRENT}}" in
  205.         y|Y|yes|YES) UTIME_H=yes; ;;
  206.         *)             UTIME_H=no; ;;
  207.         esac
  208.         ;;
  209.  
  210.     11)
  211.         case "${var1}" in
  212.         dirent)
  213.             DIRENT=yes; SYSDIR=no;
  214.             ;;
  215.         sys/dir) 
  216.             DIRENT=no; SYSDIR=yes;
  217.             ;;
  218.         *)
  219.             echo ${n} "Do your system support dirent.h (default:${DIRENT}) ? ${c}"
  220.             read var1 dummy
  221.             case "${var1:-${DIRENT}}" in
  222.             y|Y|yes|YES) DIRENT=yes; SYSDIR=no; ;;
  223.             *)             DIRENT=no; SYSDIR=no; ;;
  224.             esac
  225.  
  226.             if [ ${DIRENT} = no ]
  227.             then
  228.                 echo ${n} "Do your system support sys/dir.h (default:${SYSDIR}) ? ${c}"
  229.                 read var1 dummy
  230.                 case "${var1:-${SYSDIR}}" in
  231.                 y|Y|yes|YES) DIRENT=no; SYSDIR=yes; ;;
  232.                 *)             DIRENT=no; SYSDIR=no; ;;
  233.                 esac
  234.             fi
  235.             ;;
  236.         esac
  237.         ;;
  238.  
  239.     12)
  240.         if [ ".${var1}" = . ]
  241.         then
  242.             echo "If your system don't need word allignment for words (like 80386)"
  243.             echo "compress can use this fact to by faster. If your are not sure type y"
  244.             echo ${n} "Must words start at a even address (default:${NOALLIGN}) ? ${c}"
  245.             read var1 var2 varr
  246.         fi
  247.  
  248.         if [ ".${var2}" = . ]
  249.         then
  250.             echo ${n} "Byteorder on your system (default:${BYTEORDER}) ? ${c}"
  251.             read var2 varr 
  252.         fi
  253.  
  254.         case "${var1}" in
  255.         n|no|N|NO)    var1=no; ;;
  256.         *)            var1=yes; ;;
  257.         esac
  258.  
  259.          NOALLIGN="${var1:-${NOALLIGN}}"
  260.          BYTEORDER="${var2:-${BYTEORDER}}"
  261.         ;;
  262.  
  263.     d|D)
  264.         echo "Testing the system to find out what kind of system we have."
  265.         BINDIR=/usr/bin
  266.         MANDIR=/usr/man/man1
  267.         DIRENT=no
  268.         SYSDIR=no
  269.         UTIME_H=no
  270.         IBUFSIZ=2048
  271.         OBUFSIZ=2048
  272.         USERMEM=0
  273.         REGISTERS=2
  274.         LSTAT=no
  275.         CCOPT='-O'
  276.         LBOPT=
  277.         EXTRA=
  278.         [ -f /usr/include/sys/dir.h ] && { SYSDIR=yes; }
  279.         [ -f /usr/include/dirent.h ] && { DIRENT=yes; }
  280.         [ -f /usr/include/utime.h ] && { UTIME_H=yes; }
  281.         [ -d /usr/local/bin ] && { BINDIR=/usr/local/bin; }
  282.         [ -d /usr/local/man ] && { BINDIR=/usr/local/man/man1; }
  283.         [ -f /usr/bin/compress ] && { BINDIR=/usr/bin; }
  284.     
  285.         if [ ".${CC}" = . ]
  286.         then
  287.             echo ${n} "Find compiler. Compiler is: ${c}"
  288.             echo 'main() {return 0;}' >/tmp/sh$$.c
  289.  
  290.             for cc in cc gcc
  291.             do
  292.                 if ${cc} -c /tmp/sh$$.c >/dev/null 2>&1
  293.                 then
  294.                     rm -f sh$$.o
  295.                     CC=${cc}
  296.                     echo ${CC}
  297.                     break
  298.                 fi
  299.             done
  300.  
  301.             if [ ".${CC}" = . ]
  302.             then
  303.                 echo "Can't file one of the standaard compilers. Give C Compiler name"
  304.                 echo ${n} "C Compiler : ${c}"
  305.                 read CC dummy
  306.             fi
  307.         fi
  308.  
  309.         echo ${n} "Test best buffer size: ${c}"
  310.         cat >/tmp/sh$$.c <<!
  311. #include <stdio.h>
  312.         main()
  313.             {
  314.                 int        size;
  315.     
  316.                 size = 1024;
  317. #ifdef BUFSIZ
  318.                 if (size < BUFSIZ)    size = BUFSIZ;
  319. #endif
  320.                 if (sizeof(int)<4)    size = 2048;
  321.                 printf("%d\n", size);
  322.                 return 0;
  323.             }
  324. !
  325.         ${CC} /tmp/sh$$.c && IBUFSIZ=`./a.out`
  326.         rm -f /tmp/sh$$.c a.out
  327.         OBUFSIZ=${IBUFSIZ}
  328.         echo "${IBUFSIZ}"
  329.  
  330.         echo ${n} "Test byte order of system: ${c}"
  331.         cat >/tmp/sh$$.c <<!
  332.         main()
  333.             {
  334.                 long    test;
  335.         extern    int        write();
  336.         
  337.                 test = 0x31323334L;
  338.                 write(1, (char *)&test, 4);
  339.                 return 0;
  340.             }
  341. !
  342.         ${CC} /tmp/sh$$.c && BYTEORDER=`./a.out`
  343.         BYTEORDER="${BYTEORDER:-0000}"
  344.         echo ${BYTEORDER}
  345.         rm -f /tmp/sh$$.c a.out
  346.  
  347.  
  348.         echo ${n} "Test word allignment. Must words be allign: ${c}"
  349.         cat >/tmp/sh$$.c <<!
  350.         sig() {exit(1);}
  351.         main()
  352.             {
  353.                 int        i;
  354.                 char    bfr1[6];
  355.                 char    bfr2[6];
  356.                 long    test;
  357.         extern    int        write();
  358.  
  359.                 for (i = 1 ; i <= 15 ; ++i)
  360.                     signal(i, sig);
  361.     
  362.                 bfr1[0]=' ';bfr1[1]='1';bfr1[2]='2';
  363.                 bfr1[3]='3';bfr1[4]='4';bfr1[5]=' ';
  364.                 bfr2[0]='X';bfr2[1]='X';bfr2[2]='X';
  365.                 bfr2[3]='X';bfr2[4]='X';bfr2[5]='X';
  366.  
  367.                 test = *(long *)(bfr1+1);
  368.